package com.mmy.controller.sys;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSONObject;
import com.mmy.domain.constzone.TConstZone;
import com.mmy.domain.sys.TSysOrg;
import com.mmy.domain.sys.TSysUser;
import com.mmy.domain.sys.VSysOrg;
import com.mmy.service.impl.constzone.ConstZoneServiceImpl;
import com.mmy.service.impl.sys.SysOrgServiceImpl;
import com.mmy.service.impl.sys.SysUserServiceImpl;

@Controller
public class SysOrgController {
	@Autowired
	SysOrgServiceImpl sysOrgServiceImpl;
	@Autowired
	SysUserServiceImpl userService;
	@Autowired
	ConstZoneServiceImpl constZoneServiceImpl;

	/**
	 * 函数功能说明： 进入旅行社页面
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2021.03.17
	 */
	@RequestMapping(value = "/backorgindex")
	public String findAllOrg(Model model) {
		List<VSysOrg> lstSysOrg = sysOrgServiceImpl.findALL();
		model.addAttribute("lstSysOrg", lstSysOrg);
		// 查询所有省
		List<TConstZone> lstZoneProvince = constZoneServiceImpl.findAllProvince();
		model.addAttribute("lstZoneProvince", lstZoneProvince);

		return "webbackground/sysorgmanagement/OrgIndex";
	}
	
	/**
	 * 函数功能说明： 进入旅行社审核页面
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2021.03.17
	 */
	@RequestMapping(value = "/backorgcheck")
	public String findCheckOrg(Model model) {
		List<VSysOrg> lstSysOrg = sysOrgServiceImpl.findCheck();
		model.addAttribute("lstSysOrg", lstSysOrg);

		return "webbackground/sysorgmanagement/OrgCheck";
	}
	
	@RequestMapping(value = "/orgcheck")
	public String Orgpass(HttpServletRequest request) {
		
		String id = request.getParameter("id");
		String flag = request.getParameter("flag");
		int iOrgID = Integer.parseInt(id);
		TSysOrg org = sysOrgServiceImpl.findByOrgID(iOrgID);
		org.setSpare5(flag);
		sysOrgServiceImpl.check(org);
		
		//审核通过 把该公司经理的账号开启
		if(flag == "1") {
			List<TSysUser> lst = userService.findByOrgID(iOrgID);
			for (TSysUser item : lst) {
				userService.pass(item);
			}
		}
		
		//审核不通过 删除账号和公司
		if(flag == "2") {
			
		}
		
		
		return "webbackground/sysorgmanagement/OrgCheck";
	}
	
	/**
	 * 函数功能说明： 异步--公司列表数据
	 * 
	 * @param 参数说明 vPlaneBase
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.17
	 *
	 */
	@RequestMapping("/backsysorgjson")
	@ResponseBody
	public String backSysOrgJson(HttpServletRequest request, HttpSession session, Model model) {

		// 接收的分页信息处理
		int page = Integer.parseInt(request.getParameter("page"));
		int rows = Integer.parseInt(request.getParameter("rows"));
		int startIndex = (page - 1) * rows;
		int count = rows;
		// 搜索条件
		String strOrgName = request.getParameter("orgName");
		String strUpOrgID = request.getParameter("upOrgID");
		String strZoneID = request.getParameter("zoneID");
		TSysUser sessionSysUser = (TSysUser) session.getAttribute("tSysUser");
		// 超级管理员显示所有的公司 其他旅行社可以看到自己的公司及下级公司
		// 表格数据
		List<VSysOrg> lstSysOrg = sysOrgServiceImpl.findByOrgID(sessionSysUser, strOrgName, strUpOrgID, strZoneID,
				startIndex, count);

		model.addAttribute("lstSysOrg", lstSysOrg);
		// 数据总数量
		int total = sysOrgServiceImpl.queryOrgCount(sessionSysUser, strOrgName, strUpOrgID, strZoneID);
		Map<String, Object> ret = new HashMap<String, Object>();
		ret.put("rows", lstSysOrg);
		ret.put("total", total);
		return JSONObject.toJSONString(ret);
	}
	
	/**
	 * 函数功能说明： 异步--公司列表数据
	 * 
	 * @param 参数说明 vPlaneBase
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.17
	 *
	 */
	@RequestMapping("/backsysorgcheckjson")
	@ResponseBody
	public String backsysorgcheckjson(HttpServletRequest request, HttpSession session, Model model) {

		// 接收的分页信息处理
		int page = Integer.parseInt(request.getParameter("page"));
		int rows = Integer.parseInt(request.getParameter("rows"));
		int startIndex = (page - 1) * rows;
		int count = rows;
		TSysUser sessionSysUser = (TSysUser) session.getAttribute("tSysUser");
		List<VSysOrg> lstSysOrg = sysOrgServiceImpl.findCheck();
		model.addAttribute("lstSysOrg", lstSysOrg);
		int total = sysOrgServiceImpl.queryCheckCount();
		Map<String, Object> ret = new HashMap<String, Object>();
		ret.put("rows", lstSysOrg);
		ret.put("total", total);
		return JSONObject.toJSONString(ret);
	}
	
	/**
	 * 函数功能说明： 创建旅行社信息 进入页面
	 * 
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.17
	 *
	 */
	@RequestMapping(value = "/backtocreateorg")
	public String backToCreateOrg(HttpSession session, Model model) {
		// 判断登录人如果为超级管理员 显示所有旅行社信息 非超级管理员 显示自己公司及下级公司
		TSysUser sessionSysUser = (TSysUser) session.getAttribute("tSysUser");
		List<TSysOrg> lstSysOrg = new ArrayList<TSysOrg>();
		if (sessionSysUser.getUserID() == 0) {
			lstSysOrg = sysOrgServiceImpl.findAll();
		} else {
			lstSysOrg = sysOrgServiceImpl.findBySysOrgID(sessionSysUser.getOrgID());
		}
		model.addAttribute("lstSysOrg", lstSysOrg);
		// 查询所有的省
		List<TConstZone> lstZoneProvince = constZoneServiceImpl.findAllProvince();
		model.addAttribute("lstZoneProvince", lstZoneProvince);

		return "webbackground/sysorgmanagement/CreateOrg";
	}

	/**
	 * 函数功能说明： 创建旅行社信息 提交
	 * 
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.17
	 *
	 */
	@RequestMapping(value = "/backsavecreateorg")
	public String backSaveCreateOrg(TSysOrg tSysOrg, HttpSession session) {
		TSysUser sessionSysUser = (TSysUser) session.getAttribute("tSysUser");
		sysOrgServiceImpl.createSysOrg(tSysOrg, sessionSysUser);
		return "redirect:backorgindex";

	}

	/**
	 * 函数功能说明： 修改旅行社信息
	 *
	 * @param 参数说明 tSysOrg
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.17
	 */
	@RequestMapping("/backtoupdateorg")
	public String backToUpdateOrg(HttpSession session, HttpServletRequest request, Model model) {
		String iOrgID = request.getParameter("iOrgID");
		TSysOrg dbSysOrg = sysOrgServiceImpl.findByOrgID(Integer.parseInt(iOrgID));
		model.addAttribute("dbSysOrg", dbSysOrg);
		// 判断登录人如果为超级管理员 显示所有旅行社信息 非超级管理员 显示自己公司及下级公司
		TSysUser sessionSysUser = (TSysUser) session.getAttribute("tSysUser");
		List<TSysOrg> lstSysOrg = new ArrayList<TSysOrg>();
		if (sessionSysUser.getUserID() == 0) {
			lstSysOrg = sysOrgServiceImpl.findAll();
		} else {
			lstSysOrg = sysOrgServiceImpl.findBySysOrgID(sessionSysUser.getOrgID());
		}
		model.addAttribute("lstSysOrg", lstSysOrg);
		// 查询所有的省
		List<TConstZone> lstZoneProvince = constZoneServiceImpl.findAllProvince();
		model.addAttribute("lstZoneProvince", lstZoneProvince);
		// 获取所在的省
		int strProvinceID = constZoneServiceImpl.findProvince(dbSysOrg.getZoneID()).getZoneID();
		model.addAttribute("strProvinceID", strProvinceID);
		// 查询所在省 所有的市
		List<TConstZone> lstZoneCity = constZoneServiceImpl.findCities(dbSysOrg.getZoneID());
		model.addAttribute("lstZoneCity", lstZoneCity);
		int strCityID = constZoneServiceImpl.findCity(dbSysOrg.getZoneID()).getZoneID();
		model.addAttribute("strCityID", strCityID);
		// 根据省ID查出该市所有的区
		List<TConstZone> lstConstZoneDistrict = constZoneServiceImpl.findDistricts(strCityID);
		model.addAttribute("lstConstZoneDistrict", lstConstZoneDistrict);

		return "webbackground/sysorgmanagement/UpdateOrg";
	}

	/**
	 * 函数功能说明： 修改旅行社信息 提交
	 *
	 * @param 参数说明 tSysOrg
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.17
	 */
	@RequestMapping(value = "/backsaveupdateorg")
	public String backSvaeUpdateOrg(TSysOrg tSysOrg, HttpSession session) {
		TSysUser sessionSysUser = (TSysUser) session.getAttribute("tSysUser");
		sysOrgServiceImpl.updateSysOrg(tSysOrg, sessionSysUser);
		return "redirect:backorgindex";

	}

	/**
	 * 函数功能说明： 删除旅行社信息
	 *
	 * @param 参数说明 tSysOrg
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.17
	 */
	@RequestMapping(value = "/backdeleteorgchecked")
	@ResponseBody
	public Map<String, Object> backDeleteOrg(HttpServletRequest request) {
		String lstStrOrgID = request.getParameter("checkList");
		String[] striOrgIDs = lstStrOrgID.split(",");

		Map<String, Object> data = sysOrgServiceImpl.deleteChecked(striOrgIDs);
		return data;

	}
}
